home *** CD-ROM | disk | FTP | other *** search
/ Leisure Game Pak / Leisure Game Pak.iso / lpgame1 / 04 / source / mynesdef.pas < prev    next >
Pascal/Delphi Source File  |  1994-08-17  |  6KB  |  171 lines

  1. (*  .....................................................................  *)
  2. (*  :    file        :  MYNESDEF.PAS                                 :  *)
  3. (*  :      contents    :  the types and constants for MYNES!        :  *)
  4. (*  :    last update    :  30-JUN-93                                    :  *)
  5. (*  :...................:...............................................:  *)
  6.  
  7. CONST    HOF_NAME_LEN = 8;
  8.     HOF_SIZE     = 8;
  9.         HOF_FILENAME = 'MYNES!.HOF';
  10.  
  11. TYPE    HOF_ENTRY_TYPE= RECORD
  12.                     HiScore : WORD;
  13.                                 Name      : STRING[HOF_NAME_LEN];
  14.                 Day     : WORD;
  15.                                 Month   : WORD;
  16.                                 Year    : WORD;
  17.             END;  (* HOF_ENTRY_TYPE *)
  18.  
  19.     HOF_ARRAY_TYPE= ARRAY[1..8] OF HOF_ENTRY_TYPE;
  20.  
  21.         DISK_FILE_TYPE= RECORD
  22.                 HOF        : HOF_ARRAY_TYPE;
  23.                                 SoundIsOn,
  24.                                 LookIsPL    : BOOLEAN;
  25.                                 Level,
  26.                                 Speed        : BYTE;
  27.             END;  (* DISK_FILE_TYPE *)
  28.  
  29.         (*  DEMO_START is a special situation ... the computer has to find
  30.         his first move, he cannot use the old reveal/mark-lists.
  31.         DEMO_START is switched to DEMO after the computer's move. *)
  32.         STATUS_TYPE   = (TITLE,                (* title sequence *)
  33.              PLAY, DEMO_START, DEMO,    (* starting/game status *)
  34.                  BLASTED, WON, TIMEOUT,        (* game over status *)
  35.              QUIT);      (* is both, game over and starting status *)
  36.  
  37.     FIELD_TYPE    =  ARRAY [COL_ROW_TYPE, COL_ROW_TYPE] OF CONTENTS_TYPE;
  38.  
  39.  
  40. CONST   MONTHS : ARRAY[1..12] OF STRING[3] =
  41.         ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
  42.          'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
  43.  
  44.     FIRSTSPEED    = 1;
  45.         LASTSPEED    = 5;
  46.         (*  SPEED_FACTOR * scene.TimeLimit = actual_time_limit_for_game
  47.             the SPEED_FACTOR is the time one game_minute lasts ...
  48.             Speed       :  slow  fair  fast  awkward  ridiculous
  49.             Factor      :  100%   75%   50%    33%      25%
  50.         Game-minute :   60s   45s   30s    20s      15s             *)
  51.         SPEED_FACTOR    : ARRAY[FIRSTSPEED..LASTSPEED] OF WORD =
  52.         (60,45,30,20,15);
  53.         SPEEDSTR : ARRAY[FIRSTSPEED..LASTSPEED] OF STRING[10] =
  54.             ('SLOW', 'FAIR', 'FAST', 'AWKWARD', 'RIDICULOUS');
  55.  
  56.     MAX_MINES    = 200;        (*  max. no of MINES, for explode *)
  57.  
  58.         SLOW_DIM    = TRUE;             (* modes for dimming-speed *)
  59.         FAST_DIM    = NOT(SLOW_DIM);
  60.  
  61.  
  62.         CHECK_TIME      = 200;  (* speed-test takes CHECK_TIME/100 secs *)
  63.  
  64.         OPT_DIM_TIME    = 300;    (* msecs for dimming *)
  65.  
  66.     (* DIM_DELAY, DIM_STEP regulate dimming-speed *)
  67.         DIM_DELAY    : WORD = 0;
  68.         DIM_STEP    : WORD = 2;
  69.  
  70.     (*  the array containing the level-data  *)
  71.     FIRSTLEVEL    = 1;
  72.         LASTLEVEL    = 8;
  73.         (* TimeLimit is in game-minutes *)
  74.     Scene_ARRAY    : ARRAY[FIRSTLEVEL..LASTLEVEL] OF SCENE_TYPE =
  75.         (  (NumCols: 12; NumRows: 8;
  76.                     Size: (x: 50;  y: 50);
  77.                     Origin: (x: 14; y: 7);
  78.                     NumMines: 12;
  79.                 TimeLimit:  3),            (*   LEVEL   1  *)
  80.            (NumCols: 15; NumRows: 10;
  81.                     Size: (x: 40;  y: 39);
  82.                     Origin: (x: 13; y: 11);
  83.                     NumMines: 20;
  84.                 TimeLimit:  5),            (*   LEVEL   2  *)
  85.            (NumCols: 20; NumRows: 13;
  86.                     Size: (x: 30;  y: 30);
  87.                     Origin: (x: 10; y: 10);
  88.                     NumMines: 40;
  89.                 TimeLimit: 10),              (*   LEVEL   3  *)
  90.            (NumCols: 25; NumRows: 16;
  91.                     Size: (x: 24;  y: 24);
  92.                     Origin: (x: 8; y: 11);
  93.                     NumMines: 60;
  94.                 TimeLimit:  15),              (*   LEVEL   4  *)
  95.            (NumCols: 28; NumRows: 18;
  96.                     Size: (x: 21;  y: 21);
  97.                     Origin: (x: 12; y: 13);
  98.                     NumMines: 75;
  99.                 TimeLimit:  18),              (*   LEVEL   5  *)
  100.                   (NumCols: 31; NumRows: 21;
  101.                     Size: (x: 19;  y: 18);
  102.                     Origin: (x:10; y: 12);
  103.                     NumMines: 100;
  104.                 TimeLimit:  25),              (*   LEVEL   6  *)
  105.                   (NumCols: 36; NumRows: 24;
  106.                     Size: (x: 16; y: 16);
  107.                     Origin: (x:14; y: 8);
  108.                     NumMines: 135;
  109.                 TimeLimit:  33),              (*   LEVEL   7  *)
  110.                   (NumCols: 41; NumRows: 29;
  111.                     Size: (x: 14;  y: 13);
  112.                     Origin: (x: 13; y: 9);
  113.                     NumMines: 190;
  114.                 TimeLimit:  45)              (*   LEVEL   8  *)
  115.         );
  116.  
  117.         HOF_DEFAULT : HOF_ENTRY_TYPE =
  118.             (HiScore : 0; Name : ' @ Mac @'; Day : 30; Month : 8; Year : 92);
  119.  
  120.         TITLE_WAIT    = 15;    (* secs to wait in show_title *)
  121.  
  122.         LEVEL_GAD_Y     = 190;    (* the y-coordinates for the title-gadgets *)
  123.         SPEED_GAD_Y    = LEVEL_GAD_Y + 57;
  124.         TITLE_GAD_Y    = LEVEL_GAD_Y + 100;
  125.         INSTRUCTIONS_Y  = LEVEL_GAD_Y + 132;
  126.  
  127.         START_LEVEL    = FIRSTLEVEL;    (* the start setting *)
  128.         START_SPEED    = 1;
  129.  
  130.     COLBAR_HEIGHT    = 11;
  131.         COLBAR_LEN    = 500;
  132.     TIME_BAR    : COORDS_TYPE = (x: 56; y: 432);
  133.         DONE_BAR    : COORDS_TYPE = (x: 56; y: 455);
  134.         MIDDLE_X    : WORD = 319;
  135.     (* half the x resolution, is re-computed in initialize() *)
  136.  
  137. VAR    playfield    : FIELD_TYPE;
  138.         GameStatus    : STATUS_TYPE;
  139.         play_tile    : TILE_TYPE;
  140.  
  141.         SoundIsON,
  142.         LookIsPL,
  143.     HOFexists     : BOOLEAN;
  144.  
  145.         TITLE_DEMO_GADGET,
  146.         TITLE_QUIT_GADGET,
  147.         TITLE_START_GADGET,
  148.         TITLE_MUSIC_GADGET,
  149.         TITLE_LOOK_GADGET,
  150.         TITLE_HOF_GADGET,
  151.         GAME_DEMO_GADGET,
  152.         GAME_QUIT_GADGET,
  153.         GAME_PAUSE_GADGET : GADGET_TYPE;
  154.  
  155.         LEVEL_GAD    : ARRAY[FIRSTLEVEL..LASTLEVEL] OF GADGET_TYPE;
  156.         SPEED_GAD    : ARRAY[1..5] OF GADGET_TYPE;
  157.         PLAYTIMER    : TIMER_TYPE;
  158.         Score,
  159.     Speed,
  160.         Level,
  161.         MarkedTiles,                    (* no. of tiles marked *)
  162.         Tiles_left,            (* no. of tiles not yet revealed *)
  163.     TilesToReveal    : WORD;        (* tiles to reveal during game *)
  164.     MaxTileSize     : LONGINT;
  165.         LeastCol    : COL_ROW_TYPE;
  166.         ComputerPlayed,               (* need them to decide whether it *)
  167.         ManPlayed    : BOOLEAN;    (*  was a demo, demo/play or play *)
  168.     OldExitProc    : POINTER;
  169.         HallOfFame    : HOF_ARRAY_TYPE;
  170.         HOF_PathName    : STRING;
  171.